package io.renren.system.sys.service;

import io.renren.common.service.BaseService;
import io.renren.system.sys.dto.SysRegionDTO;
import io.renren.system.sys.entity.SysRegionEntity;

import java.util.List;
import java.util.Map;

/**
 * 系统设置-地区管理
 */
public interface SysRegionService extends BaseService<SysRegionEntity> {

    /**
     * 根据主键获取地区区域详细信息
     *
     * @param id
     * @return
     */
    SysRegionDTO get(Long id);

    /**
     * 新增保存地区区域信息
     *
     * @param dto
     */
    void save(SysRegionDTO dto);

    /**
     * 修改保存地区区域信息
     *
     * @param dto
     */
    void update(SysRegionDTO dto);

    /**
     * 根据主键删除地区区域信息
     *
     * @param ids
     */
    void delete(Long[] ids);

    /**
     * 获取指定区域详细信息
     *
     * @param regionid
     * @return
     */
    SysRegionEntity selectRegion(String regionid);

    /**
     * 获取指定区域的上级区域详细信息
     *
     * @param regionid
     * @return
     */
    SysRegionEntity getParentRegionid(String regionid);

    /**
     * 获取指定区域的子级区域列表
     *
     * @param regionid
     * @return
     */
    List<SysRegionEntity> getChildrenRegionid(String regionid);

    /**
     * 获取指定区域列表或子区域列表
     *
     * @param regionid
     * @param firstInto
     * @return
     */
    List<SysRegionDTO> loadList(String regionid, Integer firstInto);

    /**
     * 获取指定区域列表或子区域列表(超管获取全部)
     *
     * @param regionid
     * @param firstInto
     * @return
     */
    List<SysRegionEntity> getRootRegionsByRegionid(String regionid, Integer firstInto);

    /**
     * 获取指定区域列表或子区域列表
     *
     * @param regionid
     * @param firstInto
     * @return
     */
    List<SysRegionEntity> getRegionsByRegionid(String regionid, Integer firstInto);

    /**
     * 获取地区全部列表转换为id和pid
     *
     * @return
     */
    List<Map<String, Object>> getTreeList();

    /**
     * 获取指定区域名称
     *
     * @param regionid
     * @return
     */
    String getRegionName(String regionid);
}